package com.whfc.ms.api.fmam.service;

import com.whfc.common.result.ListData;
import com.whfc.common.result.PageData;
import com.whfc.fmam.entity.dto.FmamWeighRoomDTO;
import com.whfc.fmam.entity.dto.FmamWeighRoomFvsDeviceDTO;
import com.whfc.fmam.entity.dto.LicenseFileDTO;
import com.whfc.fmam.entity.qo.WeighRoomAddQO;
import com.whfc.fmam.entity.qo.WeighRoomEditQO;
import com.whfc.fmam.entity.qo.WeighRoomFvsDeviceAddQO;
import com.whfc.fuum.entity.SysUser;
import com.whfc.fvs.dto.FvsRecordDTO;
import com.whfc.fvs.dto.FvsStreamDTO;

import java.util.Date;
import java.util.List;

/**
 * @author sun_guodong
 * @description 磅房业务
 * @date 2019-11-13
 */
public interface WeighRoomService {
    /**
     * 新增磅房
     *
     * @param request
     */
    void addWeighRoom(WeighRoomAddQO request);

    /**
     * 删除磅房
     *
     * @param id
     */
    void delWeighRoom(Integer id);

    /**
     * 编辑磅房
     *
     * @param request
     */
    void editWeighRoom(WeighRoomEditQO request);

    /**
     * 查看磅房的授权文件
     *
     * @param weighRoomId
     * @return
     */
    ListData<LicenseFileDTO> licenseFileList(Integer weighRoomId);

    /**
     * 生成授权文件
     *
     * @param id
     */
    void licenseGenerate(Integer id);

    /**
     * 磅房列表页
     *
     * @param user
     * @param pageNum
     * @param pageSize
     * @param deptId
     * @return
     */
    PageData<FmamWeighRoomDTO> listFmamWeighRoomDTO(SysUser user, Integer pageNum, Integer pageSize, Integer deptId);

    /**
     * 磅房列表页(不分页)
     *
     * @param deptId
     * @return
     */
    ListData<FmamWeighRoomDTO> listFmamWeighRoomDTO(Integer deptId);

    /**
     * 磅房视频视频列表
     *
     * @param weighRoomId
     * @return
     */
    List<FmamWeighRoomFvsDeviceDTO>  videoList(Integer weighRoomId);


    /**
     * 获取磅房未添加的项目视频监控列表
     *
     * @param deptId
     * @param weighRoomId
     * @return
     */
    List<FmamWeighRoomFvsDeviceDTO>  projectVideoList(Integer deptId, Integer weighRoomId);


    /**
     * 磅房添加视频监控设备
     *
     * @param fvsDeviceAddQO
     * @return
     */
    void addVideo(WeighRoomFvsDeviceAddQO fvsDeviceAddQO);


    /**
     * 磅房视频监控直播地址
     *
     * @param deviceId
     * @return
     */
    FvsStreamDTO videoStreamURL(Integer deviceId);

    /**
     * 磅房视频监控回放
     *
     * @param deviceId
     * @param startTime
     * @param endTime
     * @return
     */
    ListData<FvsRecordDTO> videoRecordList(Integer deviceId, Date startTime, Date endTime);


    /**
     * 磅房视频监控设备删除
     *
     * @param weighRoomId
     * @param deviceId
     */
    void videoDel(Integer weighRoomId, Integer deviceId);
}
